package com.ming.quartz.case1.jobDetail;

import com.ming.quartz.case1.job.TwoJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TwoScheduler {

    @Bean
    public JobDetail twoJobDetail() {
        // 链式编程,可以携带多个参数,在Job类中声明属性 + setter方法
//        withIdentity 方法可以传入两个参数 withIdentity(String name,String group) 来定义 TriggerKey，
//        也可以不设置，像上文示例中会自动生成一个独一无二的 TriggerKey 用来区分不同的 Trigger。
        return JobBuilder.newJob(TwoJob.class).withIdentity("twoJob")
                .usingJobData("two","two")// 将任务放在map中
                .storeDurably()
                .build();// 创建执行任务
    }

    @Bean
    public Trigger twoJobTrigger(){
       // 指定调度规则
        SimpleScheduleBuilder scheduleBuilder =
                SimpleScheduleBuilder
                        .simpleSchedule()// 返回simpleSchedule对象
                        .withIntervalInSeconds(2)// 设置间隔时间
                        .repeatForever();// 永远重复
        // 将调度规则和任务关联
        return TriggerBuilder
                .newTrigger()// 通过工厂创建对应的触发类
                .forJob(twoJobDetail())// 指定任务
                .withIdentity("twoJob")// 指定trigger的名称,可以和JobDetail相同
                .withSchedule(scheduleBuilder)// 指定调度规则,即和任务关联
                .build();
    }

}